
package com.zjxd.business.web.api.redis;

import java.util.Set;

/**
 * @author XRom
 * @version V1.0.0
 * @date 2018-01-04 13:12
 */
public interface RedisService {

	/**
	 * 存入缓存数据
	 * 
	 * @param name
	 *            缓存名
	 * @param key
	 *            缓存key
	 * @param value
	 *            缓存value
	 */
	void set(String name, String key, String value);

	/**
	 * 存入缓存数据并设置有效时间
	 * 
	 * @param name
	 *            缓存名
	 * @param key
	 *            缓存key
	 * @param value
	 *            缓存value
	 * @param millis
	 *            有效时间：单位秒
	 */
	void set(String name, String key, String value, long millis);

	/**
	 * 插入数据
	 * 
	 * @param name
	 * @param key
	 * @param value
	 * @param millis
	 * @return
	 */
	void setObj(String name, String key, Object value, long millis);

	/**
	 * 设置缓存时间
	 * 
	 * @param name
	 * @param key
	 * @param millis
	 */
	void setTimeOut(String name, String key, long millis);

	/**
	 * 获取缓存数据
	 * 
	 * @param name
	 *            缓存名
	 * @param key
	 *            缓存key
	 * @return
	 */
	Object get(String name, String key);

	/**
	 * @param name
	 *            缓存名称
	 * @param key
	 * @return
	 */
	String getStr(String name, String key);

	/**
	 * 获取缓存有效时间
	 * 
	 * @param name
	 *            缓存名
	 * @param key
	 *            缓存key
	 * @return
	 */
	Long getExpire(String name, String key);

	/**
	 * 删除缓存
	 * 
	 * @param name
	 *            缓存名
	 * @param key
	 *            缓存key
	 */
	void delete(String name, String key);

	/**
	 * 检查key是否存在
	 * 
	 * @param name
	 *            缓存名
	 * @param key
	 *            缓存key
	 * @return
	 */
	boolean hasKey(String name, String key);

	/**
	 * 莫模糊查询key
	 * 
	 * @param name
	 * @param key
	 * @return
	 */
	Set<String> getVagueKey(String name, String key);

	<T> T getObj(String name, String key, Class<T> valueType);
}
